卸载Notepad++!事实已证明,它更牛逼……
前言(Prologue)
编辑器的选择(Editor Choices)
跨平台:Vim 和 Sublime Text 均为跨平台编辑器(在 Linux、OS X 和 Windows 下均可使用)。作为一个程序员,切换系统是常有的事情,为了减少重复学习,使用一个跨平台的编辑器是很有必要的。
可扩展:Vim 和 Sublime Text 都是可扩展的(Extensible),并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。
互补:Vim 和 Sublime Text 分别是命令行环境(CLI)和图形界面环境(GUI)下的最佳选择,同时使用两者会大大提高工作效率。
个人背景(Personal Background)
本文风格(Writing Style)
编辑器(Editor)vs 集成开发环境(Integrated Development Environment,下文简称 IDE)
编辑器面向无语义的纯文本,不涉及领域逻辑,因此速度快体积小,适合编写单独的配置文件和动态语言脚本(Shell、Python 和 Ruby 等)。
IDE 面向有语义的代码,会涉及到大量领域逻辑,因此速度偏慢体积庞大,适合编写静态语言项目(Java、C++ 和 C# 等)。
安装(Installation)
添加 Sublime Text 到环境变量
接下来你就可以在命令行里面利用 subl 命令直接使用 Sublime Text 了:
subl file :: 使用 Sublime Text 打开 file 文件
subl folder :: 使用 Sublime Text 打开 folder 文件夹
subl . :: 使用 Sublime Text 当前文件夹
安装 Package Control
使用 Ctrl + `打开 Sublime Text 控制台。 将下面的代码粘贴到控制台里:
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
等待 Package Control 安装完成。之后使用 Ctrl + Shift + P 打开命令板,输入 PC 应出现 Package Control:
成功安装 Package Control 之后,我们就可以方便的安装使用 Sublime Text 的各种插件:
购买(Purchase)
概览(Tour)
基本概念(Basic Concepts)
Sublime Text 的界面如下:
标签(Tab):无需介绍。
编辑区(Editing Area):无需介绍。
侧栏(Side Bar):包含当前打开的文件以及文件夹视图。
缩略图(Minimap):如其名。
命令板(Command Palette):Sublime Text 的操作中心,它使得我们基本可以脱离鼠标和菜单栏进行操作。
控制台(Console):使用 Ctrl + `调出,它既是一个标准的 Python REPL,也可以直接对 Sublime Text 进行配置。
状态栏(Status Bar):显示当前行号、当前语言和Tab格式等信息。
配置(Settings)
与其他 GUI 环境下的编辑器不同,Sublime Text 并没有一个专门的配置界面,与之相反,Sublime Text 使用 JSON 配置文件,例如:
{
"font_size": 12,
"highlight_line": true,
}
编辑(Editing)
基本编辑(Basic Editing)
Ctrl + Enter 在当前行下面新增一行然后跳至该行;Ctrl + Shift + Enter 在当前行上面增加一行并跳至该行。
Ctrl + ←/→ 进行逐词移动,相应的,Ctrl + Shift + ←/→ 进行逐词选择。
Ctrl + ↑/↓ 移动当前显示区域,Ctrl + Shift + ↑/↓ 移动当前行。
选择(Selecting)
有时我们需要对一片区域的所有行进行同时编辑,Ctrl + Shift + L 可以将当前选中区域打散,然后进行同时编辑:
有打散自然就有合并,Ctrl + J 可以把当前选中区域合并为一行:
查找&替换(Finding&Replacing)
快速查找&替换
多数情况下,我们需要查找文中某个关键字出现的其它位置,这时并不需要重新将该关键字重新输入一遍然后搜索,我们只需要使用 Shift + ←/→ 或 Ctrl + D 选中关键字,然后 F3 跳到其下一个出现位置, Shift + F3 跳到其上一个出现位置,此外还可以用 Alt + F3 选中其出现的所有位置(之后可以进行多重编辑,也就是快速替换)。
标准查找&替换
另一种常见的使用场景是搜索某个已知但不在当前显示区域的关键字,这时可以使用 Ctrl + F 调出搜索框进行搜索:
以及使用 Ctrl + H 进行替换:
关键字查找&替换
"auto_find_in_selection": true
这样之后在选中文本的状态下范围内搜索就会自动开启,配合这个功能,局部重命名(Local Renaming)变的非常方便:
正则表达式查找&替换
多文件搜索&替换
跳转(Jumping)
跳转到文件
跳转到符号
跳转到某行
Ctrl + G 然后输入行号以跳转到指定行:
组合跳转
@ 符号跳转:输入 @symbol 跳转到 symbol 符号所在的位置
# 关键字跳转:输入 #keyword 跳转到 keyword 所在的位置
: 行号跳转:输入 :12 跳转到文件的第12行。
中文输入法的问题
目前官方还没有修复这个 bug,解决方法是安装 IMESupport 插件,之后重启 Sublime Text 问题就解决了。
文件夹(Folders)
Sublime Text 支持以文件夹做为单位进行编辑,这在编辑一个文件夹下的代码时尤其有用。在 File 下 Open Folder :
窗口&标签(Windows & Tabs)
窗口(Window)
标签(Tab)
编辑代码时我们经常会开多个窗口,所以分屏很重要。Alt + Shift + 2 进行左右分屏, Alt + Shift + 8 进行上下分屏, Alt + Shift + 5 进行上下左右分屏(即分为四屏)。
全屏(Full Screen)
F11 切换普通全屏:
Shift + F11 切换无干扰全屏:
风格(Styles)
Notepad++ 默认界面
Sublime Text 默认界面
一些设置(Miscellaneous Settings)
下面是我个人使用的设置项。
// 设置Sans-serif(无衬线)等宽字体,以便阅读"
font_face": "YaHei Consolas Hybrid","
font_size": 12,
// 使光标闪动更加柔和"
caret_style": "phase",// 高亮当前行"
highlight_line": true,// 高亮有修改的标签"
highlight_modified_tabs": true,
设置之后的效果如下:
主题(Themes)
Soda Light
Soda Dark
Nexus
Flatland
Spacegray Light
Spacegray Dark
配色(Color)
"theme": "Nexus.sublime-theme",
"color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",
效果如下:
编码(Coding)
良好实践(Good Practices)
良好的代码应该是规范的,所以Google为每一门主流语言都设置了其代码规范(Code Style Guideline)。我自己通过下面的设置使以规范化自己的代码。
// 设置tab的大小为2"
tab_size": 2,
// 使用空格代替tab"
translate_tabs_to_spaces": true,
// 添加行宽标尺"rulers": [80, 100],
// 显示空白字符"draw_white_space": "all",
// 保存时自动去除行末空白"
trim_trailing_white_space_on_save": true,
// 保存时自动增加文件末尾换行"
ensure_newline_at_eof_on_save": true,
代码段(Code Snippets)
格式化(Formatting)
HTMLBeautify:格式化HTML。
AutoPEP8:格式化Python代码。
Alignment:进行智能对齐。
自动完成(Auto Completion)
Sublime Text 支持一定的自动完成,按 Tab 自动补全。
括号(Brackets)
编写代码时会碰到大量的括号,利用 Ctrl + M 可以快速的在起始括号和结尾括号间切换, Ctrl + Shift + M 则可以快速选择括号间的内容,对于缩进型语言(例如Python)则可以使用 Ctrl + Shift + J 。
此外,我使用 BracketHighlighter 插件以高亮显示配对括号以及当前光标所在区域,效果如下:
命令行(Command Line)
尽管提供了 Python 控制台,但 Sublime Text 的控制台仅支持单行输入,十分不方便,所以我使用 SublimeREPL 以进行一些编码实验(Experiments)。
其它(Miscellaneous)
宏(Macro):Sublime Text 支持录制宏,但我在实际工作中并未发现宏有多大用处。
其它平台(Other Platforms):本文只介绍了 Windows 平台上 Sublime Text 的使用,不过 Linux 和 OS X 上Sublime Text的使用方式和Windows差别不大,只是在快捷键上有所差异,请参考 Windows/Linux快捷键 和 OS X 快捷键。
项目(Projects):Sublime Text支持简单的 项目管理,但我一般只用到文件夹。
Vim模式(Vintage):Sublime Text自带 Vim模式。
构建(Build):通过配置,Sublime Text可以进行 源码构建。
调试(Debug):通过安装 插件,Sublime Text 可以对代码进行调试。
快捷键列表(Shortcuts Cheatsheet)
通用(General)
↑↓←→:上下左右移动光标,注意不是不是 KJHL !
Alt:调出菜单
Ctrl + Shift + P:调出命令板(Command Palette)
Ctrl + `:调出控制台
编辑(Editing)
Ctrl + Enter:在当前行下面新增一行然后跳至该行
Ctrl + Shift + Enter:在当前行上面增加一行并跳至该行
Ctrl + ←/→:进行逐词移动
Ctrl + Shift + ←/→进行逐词选择
Ctrl + ↑/↓移动当前显示区域
Ctrl + Shift + ↑/↓移动当前行
选择(Selecting)
Ctrl + D:选择当前光标所在的词并高亮该词所有出现的位置,再次 Ctrl + D 选择该词出现的下一个位置,在多重选词的过程中,使用 Ctrl + K 进行跳过,使用 Ctrl + U 进行回退,使用 Esc 退出多重编辑
Ctrl + Shift + L:将当前选中区域打散
Ctrl + J:把当前选中区域合并为一行
Ctrl + M:在起始括号和结尾括号间切换
Ctrl + Shift + M:快速选择括号间的内容
Ctrl + Shift + J:快速选择同缩进的内容
Ctrl + Shift + Space:快速选择当前作用域(Scope)的内容
查找&替换(Finding&Replacing)
F3:跳至当前关键字下一个位置
Shift + F3:跳到当前关键字上一个位置
Alt + F3:选中当前关键字出现的所有位置
Ctrl + F/H:进行标准查找/替换,之后:
Alt + C:切换大小写敏感(Case-sensitive)模式
Alt + W:切换整字匹配(Whole matching)模式
Alt + R:切换正则匹配(Regex matching)模式
Ctrl + Shift + H:替换当前关键字
Ctrl + Alt + Enter:替换所有关键字匹配
Ctrl + Shift + F:多文件搜索&替换
跳转(Jumping)
Ctrl + P:跳转到指定文件,输入文件名后可以:
@ 符号跳转:输入 @symbol 跳转到 symbol 符号所在的位置
# 关键字跳转:输入 #keyword 跳转到 keyword 所在的位置
: 行号跳转:输入 :12 跳转到文件的第12行。
Ctrl + R:跳转到指定符号
Ctrl + G:跳转到指定行号
窗口(Window)
Ctrl + Shift + N:创建一个新窗口
Ctrl + N:在当前窗口创建一个新标签
Ctrl + W:关闭当前标签,当窗口内没有标签时会关闭该窗口
Ctrl + Shift + T:恢复刚刚关闭的标签
屏幕(Screen)
F11:切换普通全屏
Shift + F11:切换无干扰全屏
Alt + Shift + 2:进行左右分屏
Alt + Shift + 8:进行上下分屏
Alt + Shift + 5:进行上下左右分屏
分屏之后,使用 Ctrl + 数字键 跳转到指定屏,使用 Ctrl + Shift + 数字键 将当前屏移动到指定屏
延伸阅读(Further Reading)
书籍(Books)
Mastering Sublime Text:我读过的唯一一本关于 Sublime Text 的书籍,书中介绍的插件很实用,但对编辑技巧介绍不全。
Instant Sublime Text Starter:另外一本关于 Sublime Text的书,我没有读过。
链接(Links)
官方文档:http://www.sublimetext.com/docs/3/
官方论坛:http://www.sublimetext.com/forum/
Stack Overflow 的 Sublime Text 频道:
http://stackoverflow.com/questions/tagged/sublimetext
http://stackoverflow.com/questions/tagged/sublimetext2
http://stackoverflow.com/questions/tagged/sublimetext3
非官方文档:http://sublime-text-unofficial-documentation.readthedocs.org/ 甚至比官方文档还要全面!
Package Control:https://sublime.wbond.net/ 大量的 Sublime Text 插件和主题